#ifndef LEX_YY_H
#define LEX_YY_H

///////////////////////
// Token Type Define //
///////////////////////

/* This is the control flow */
#define TOKEN_NULL 0
#define TOKEN_IF 1
#define TOKEN_ELSE 2
#define TOKEN_BEGIN 3
#define TOKEN_END 4
#define TOKEN_FOR 5
#define TOKEN_WHILE 6
// Undefined token is do ... until
// #define TOKEN_DO 7
// #define TOKEN_UNTIL 8

/* Here is for opt symbol */
#define TOKEN_PLUS 7
#define TOKEN_STAR 8
#define TOKEN_EQ 9
#define TOKEN_NUM 10
#define TOKEN_VAR 11
#define TOKEN_LPAREN 12		//(
#define TOKEN_RPAREN 13		//)
#define TOKEN_CHAR_STAR 14
#define TOKEN_MUL 15
#define TOKEN_CHAR 16
#define TOKEN_RETURN 17
#define TOKEN_VOID_TYPE 18

/* I have added and 0:00 Mar 23 */
#define TOKEN_INC 107     // ++ --
#define TOKEN_PE 108      // += -= *= /=
#define TOKEN_IS_EQ 101   // ==
#define TOKEN_MORE 102    // >
#define TOKEN_LESS 103    // <
#define TOKEN_MORE_EQ 104 // >=
#define TOKEN_LESS_EQ 105 // <=
#define TOKEN_SEMI 106    // ;
#define TOKEN_COMMA 107   // ,

#define TOKEN_QUE 110     // ?
#define TOKEN_COL 111     // :

/* This is for TYPE_SYSTEM */
#define TOKEN_BYTE_TYPE 26
#define TOKEN_INT_TYPE 20
#define TOKEN_DOUBLE_TYPE 21
#define TOKEN_FLOAT_TYPE 22
#define TOKEN_CHAR_TYPE 23
#define TOKEN_LSB 24 // '['
#define TOKEN_RSB 25 // ']'
#define TOKEN_UINT_TYPE 27

/* You can difine any other token here */
#define TOKEN_INCLUDE 50
#define TOKEN_SHARP 51 // #
#define TOKEN_BLANK 52 // for blank
#define TOKEN_ENTER 53 // \n
#define TOKEN_REF 54


#endif // LEX_YY_H